1. Field of the Invention
This invention relates in general to the field of embedded systems software development. Aspects of this invention relate to methods and systems for software modularization and code generation for embedded systems.
2. General Background and Related Art
Embedded systems software has become and continues to become ubiquitous in modern computer environments. Such systems software comes in many shapes and forms—a prototypical example being the embedded system software in a network router and/or switch—and typically manages and controls the device in which the systems software has been embedded.
Traditionally, embedded systems software is tailored to specific applications (for example, software for use in a network router) by combining together one or more software modules to implement a desired system functionality (for example, handling network traffic by a network router). In a typical development environment, the creation of new applications requires significant modifications to an existing code base (if not a complete re-write). Significant aspects of such re-writing include modification of initialization/shutdown code and system/configuration management code. When creating a new embedded systems software application, new glue code is often needed to integrate the modules of an embedded systems software application and to provide for interoperation with the relevant embedded system device(s) for which the application is being developed. As is often the case, much of such glue code carries over from application to application but often some amount of customization is nevertheless needed. Another significant aspect of the embedded systems application software's code base is configuration/system management code—code which is often manually written, application specific and time consuming to debug and maintain. And, many times such configuration/system management code is duplicative among modules such as validation mechanisms implemented in modules to manage configuration of the application software. Much of this code is also common to different embedded systems software applications.
Accordingly, there is a need in the art for a solution to simplify embedded systems software development by reducing or eliminating re-writing of embedded systems code in order to reduce development time and code complexity, improve code reusability, facilitate portability and stability, and ease code maintenance. Therefore, it would be advantageous to provide a method and system for software modularization and code generation for embedded systems.